package com.atguigu.day01;

/**
 * @ClassName LambdaDemo
 * @Description 此类描述:lambda
 * @Author dangchen
 * @DateTime 2022-09-06 19:43
 * @Version 1.0
 */

/**
 * lambda 表达式:前提是函数式接口:函数式接口就是有且仅有一个抽象方法,但是可以有多个非抽象方法的接口
 * 拷贝小括号 写死右箭头 落地大括号
 * @FunctionalInterface显示的定义是一个函数式接口,假如不写,只有一个方法的隐式的定义为函数式接口
 */

@FunctionalInterface
interface Foo{
    //public void hello();
    public int add(int x,int y);
    default int sub(int x,int y){return x-y;}
    public static int div(int x,int y){return  x/y;}
}
public class LambdaDemo {
    public static void main(String[] args) {
        /*Foo foo = new Foo() {
            @Override
            public void hello() {
                System.out.println("----hello lambda expression");
            }
        };
        foo.hello();*/

        /*Foo foo = () -> System.out.println("----hello lambda expression");
        foo.hello();*/

        Foo foo = (x, y) ->{
                return x+y;
        };
        System.out.println(foo.add(2,3));
        System.out.println(foo.sub(5,3));
        System.out.println(Foo.div(6,3));
    }
}
